One or more aspects relate, in general, to processing within a computing environment, and in particular, to processing associated with inaccessible memory.
Memory may be organized into pages (or other sizes of units of memory), and each page includes a range of addresses specifying a plurality of memory locations. The addresses may be virtual addresses, if the environment includes virtual memory, and thus, address translation may be needed. Address translation is used in order to convert a virtual memory address to a physical or real memory address. The translation from a virtual memory address to a physical or real memory address is stored in an entry within a data structure, such as a page table entry. Additionally, the memory locations in a single page of memory typically share a common set of access permissions. Access permissions determine whether an application has privileges to read or write the contents of a memory page.
Instructions may perform operations on operands, and those operands may be specified in registers, referred to as register operands, or read from memory, referred to as memory operands. To be read from memory, access is to be permitted to the memory locations being read.
A portion of memory (e.g., a plurality of memory locations) to be accessed to populate a memory operand may be located anywhere within a memory page, including for example, near the end of a page, spanning a boundary that separates two or more different pages, or extending up to the end of a page without crossing the page boundary. An application attempting to access a portion of memory that spans a page boundary is to have a page table entry and access permissions for both pages. If the application does not have a page table entry or access to a page of memory, a page fault violation occurs when the application attempts to access the page or perform address translation for the page. In order to protect system integrity, operating systems are typically strict in not allowing applications to access a page without having the proper access permissions. Thus, operating systems typically prematurely end the offending application in response to a page fault violation.
Hardware cannot always distinguish between a page of memory that has been paged out versus a page of memory that is inaccessible (e.g., not backed in physical memory), so it relies on software support. This includes invoking a data storage interrupt in which an interrupt handler performs a search of a page table to attempt to find the appropriate page table entry. This is an expensive process involving thousands of cycles to handle the interrupt.